import axios from 'axios'
import { ElMessage } from 'element-plus'

// 创建axios实例
const service = axios.create({
  baseURL: '/api', // 使用代理路径，开发环境会自动转发到后端服务器
  timeout: 15000
})

// 请求拦截器
service.interceptors.request.use(
  config => {
    // 获取本地存储的access_token
    const token = localStorage.getItem('access_token')
    if (token) {
      config.headers['Authorization'] = `Bearer ${token}`
    }
    return config
  },
  error => {
    console.error('请求错误：', error)
    return Promise.reject(error)
  }
)

// 响应拦截器
service.interceptors.response.use(
  response => {
    // const res = response.data
    
    return response
    // 根据后端接口规范修改判断条件
    // 如果后端返回的数据结构是 {code: 200, data: {...}, message: 'success'}
    // if (res.code !== undefined && res.code !== 200) {
    //   ElMessage({
    //     message: res.message || '服务器错误',
    //     type: 'error',
    //     duration: 3 * 1000
    //   })
      
      // 401: 未登录或Token过期
      // if (res.code === 401) {
      //   localStorage.removeItem('access_token')
      //   window.location.href = '/login'
      // }
      
      // return Promise.reject(res.message || '服务器错误')
    // } else {
    //   return res
    // }
  },
  // error => {
  //   console.error('响应错误：', error)
    
  //   // 处理HTTP状态码错误
  //   if (error.response) {
  //     const { status } = error.response
  //     if (status === 401) {
  //       // localStorage.removeItem('access_token')
  //       // ElMessage({
  //       //   message: '登录已过期，请重新登录',
  //       //   type: 'error',
  //       //   duration: 3 * 1000
  //       // })
  //       // window.location.href = '/login'
  //     } else {
  //       ElMessage({
  //         message: error.response.data?.message || `请求失败 (${status})`,
  //         type: 'error',
  //         duration: 3 * 1000
  //       })
  //     }
  //   } else {
  //     ElMessage({
  //       message: error.message || '网络错误，请稍后重试',
  //       type: 'error',
  //       duration: 3 * 1000
  //     })
  //   }
    
  //   return Promise.reject(error)
  // }
)

/** get
 *  @module  get请求封装
 *  @description get方法，对应get请求
 *  @author dyp
 *  @param {String} url [请求的url地址]
 *  @param {Object} params [请求时携带的参数] {params:params}
 */
export const get = (url, params) => new Promise((resolve, reject) => {
    service.get(url, { params })
        .then((res) => {
            resolve(res.data)
        })
        .catch((err) => {
            reject(err.data)
        })
})
/** post
 * @module post请求封装
 * @description post方法，对应post请求
 * @author dyp
 * @param {String} url [请求的url地址]
 * @param {Object} data [请求体数据]
 * @param {Object} config [axios配置选项，包含params等]
 */
export const post = (url, data = {}, config = {}) => new Promise((resolve, reject) => {
    service.post(url, data, config)
        .then((res) => {
           
            resolve(res.data)
        })
        .catch((err) => {
          console.log(err,'err===============333333333')
            reject(err.response)
        })
})

/** put
 * @module put请求封装
 * @description put方法，对应put请求
 * @author dyp
 * @param {String} url [请求的url地址]
 * @param {Object} data [请求体数据]
 * @param {Object} config [axios配置选项，包含params等]
 */
export const put = (url, data = {}, config = {}) => new Promise((resolve, reject) => {
    service.put(url, data, config)
        .then((res) => {
            resolve(res.data)
        })
        .catch((err) => {
            console.log(err,'err===============PUT请求错误')
            reject(err.response)
        })
})

export default service 